from django.db import models
from django.db.models import UniqueConstraint


class ModelConfig(models.Model):
    name = models.CharField(max_length=255, unique=True)
    api_key = models.CharField(max_length=255, blank=True, null=True)
    model_name = models.CharField(max_length=255)
    api_base_url = models.URLField(blank=True, null=True)
    enabled = models.BooleanField(default=False)  # 新增字段

    def __str__(self):
        return self.name

    @classmethod
    def get_enabled_config(cls):
        # 获取第一个启用的配置，如果没有返回 None
        return cls.objects.filter(enabled=True).first()


class Prompt(models.Model):
    name = models.CharField(max_length=255)  # 用于识别 prompt 的名称
    template = models.TextField()  # 模板内容
    description = models.TextField(blank=True, null=True)  # 可选的描述信息
    is_visible = models.BooleanField(default=True)  # 控制是否显示的字段，默认为显示

    def __str__(self):
        return self.name


class WorkFlow(models.Model):
    name = models.CharField(max_length=255, unique=True)
    description = models.TextField()  # 描述角色的提示词，用于提供给大模型
    is_visible = models.BooleanField(default=True)  # 控制是否显示的字段，默认为显示

    def __str__(self):
        return f"Task: {self.name[:30]}"


class AnalysisReport(models.Model):
    title = models.CharField(max_length=255, help_text="报告的标题")
    report_type = models.CharField(max_length=100, help_text="报告类型")
    summary = models.TextField(help_text="报告的简要概述", blank=True, null=True)
    content = models.TextField(help_text="详细的分析结果内容")
    is_reviewed = models.BooleanField(default=False, help_text="标记报告是否已审核")
    created_at = models.DateTimeField(auto_now_add=True, help_text="报告创建的时间")
    updated_at = models.DateTimeField(auto_now=True, help_text="报告最后更新的时间")

    class Meta:
        verbose_name = "报告总结"
        verbose_name_plural = "报告总结"

    def __str__(self):
        return f"{self.title}"




